<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="./lib/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <h1 id="h1">{{msg}}</h1>
      <input type="button" value="点击改变msg" @click="msg='No'">
    </div>

    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          msg: 'ok'
        },
        methods: {
          show() {
            console.log('执行了show方法');
          }
        },
        beforeCreate() { // 第一个生命周期函数,表示实例完全被创建出来之前会执行它
          // console.log(this.msg); // undefine
          // this.show();
          // 在beforeCreate 生命周期函数执行的时候,data和methods中的数据都还没有被初始化
        },
        created() { // 第二个生命周期函数,小时
          // console.log(this.msg);
          // this.show();
          // 在 created 中data和methods都已经初始化好了
          // 如果要调用methods中的方法或者操作data中的数据,最早只能在created中操作
        },
        beforeMount(){ // 第三个生命周期函数,表示模板已经在内存中编译完成,尚未渲染到页面中去
          // console.log(document.getElementById("h1").innerText);
        },
        mounted(){ // 第四个生命周期函数,表示内存中的模板已经挂载到页面中
          // console.log(document.getElementById("h1").innerText);
          // mounted是实例创建期间最后一个生命周期函数,当执行完 mounted 就表示, 实例已经被完全创建好了,
          // 页面渲染已经完成,此时如果没有其他操作的话,这个实例就在内存中一动不动
        },

        // 运行中的两个事件
        beforeUpdate() { // 这时表示页面还没有被更新,但是数据已经更新了
          // console.log('界面上的msg:' + document.getElementById("h1").innerText);
          // console.log('data中的msg:' + this.msg);
          // 得出结论: 当执行 beforeUpdate 的时候, 页面中显示的数据还是旧的,此时dat中的数据是新的,页面尚未
          // 和最新额数据保持同步
        },
        updated() {
            console.log('界面上的msg:' + document.getElementById("h1").innerText);
            console.log('data中的msg:' + this.msg);
            // updated 执行的时候,页码和data中的数据保持同步,都是新的
        }

      })
    </script>



  </body>
</html>
